<?php
/**
 * Created by PhpStorm.
 * User: admin
 * Date: 2019/7/29
 * Time: 14:38
 */

namespace app\index\controller;
use OSS\OssClient;
use OSS\Core\OssException;

class File extends Base
{

    public function upload(){

        $file = request()->file('file');
        if($file){
            $info = $file->move('./uploads/');
            if($info){
            /*    // 成功上传后 获取上传信息
                // 输出 jpg
                echo $info->getExtension();
                // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
                echo $info->getSaveName();
                // 输出 42a79759f284b767dfcb2a0197904287.jpg
                echo $info->getFilename();*/
                $bucket = config('aliyun_bucket');
                $path = './uploads/'.$info->getSaveName();
              //  $object = $info->getFilename();
                $object =  'uploads/'.$info->getFilename();
                $this-> uploadFile($bucket,$object,$path);
             $ret =$this->get($object);print_r($ret);
            }else{
                // 上传失败获取错误信息
                echo $file->getError();
            }
        }
    }

    /**
     * 上传指定的本地文件内容
     *
     * @param OssClient $ossClient OSSClient实例
     * @param string $bucket 存储空间名称
     * @param string $object 上传的文件名称
     * @param string $Path 本地文件路径
     * @return null
     */
    public function uploadFile($bucket,$object,$Path){
        //try 要执行的代码,如果代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示
        try{
            //没忘吧，new_oss()是我们上一步所写的自定义函数
            $ossClient = $this->new_oss();
            //uploadFile的上传方法
            $ossClient->uploadFile($bucket, $object, $Path);
        } catch(OssException $e) {
            //如果出错这里返回报错信息
            return $e->getMessage();
        }
        //否则，完成上传操作
        return true;
    }

    /**
     * 实例化阿里云OSS
     * @return object 实例化得到的对象
     * @return 此步作为共用对象，可提供给多个模块统一调用
     */
    public  function new_oss(){
        //获取配置项，并赋值给对象$config
        //实例化OSS
        $oss=new OssClient(config('aliyun_access_key'),config('aliyun_access_key_secret'),config('aliyun_end_point'));
        return $oss;
    }

    public function get($object){
        $ossClient = $this->new_oss();
        $bucket = config('aliyun_bucket');
        $ossClient-> signUrl($bucket, $object, $timeout = 60);
    }



}